/**
 * 
 */
package net.gamasoft.sistemadeinventarios.util;

import java.text.DecimalFormat;
import java.util.ArrayList;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.PieSectionLabelGenerator;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;

/**
 * @author dpaniagua.
 *
 */
public class ClientesPieChart {
	
	/**
	 * Permite crear la grafica de clientes e indica las
	 * propiedades a mostrarse en la grafica.
	 * @param titulo de la grafica.
	 * @param valoresGrafica a mostrarse.
	 * @return la grafica de clientes.
	 */
	public static ChartPanel crearGraficaClientes(String titulo, ArrayList<DataClientPieChart> valoresGrafica) {
		DefaultPieDataset valoresDefault = new DefaultPieDataset();
		//Se itera la lista de valores que se agregan a la grafica.
		for (DataClientPieChart dataClientPieChart : valoresGrafica) {
			valoresDefault.setValue(dataClientPieChart.getEtiqueta(), dataClientPieChart.getValor());
		}
		
		//Crear la grafica de clientes.
		JFreeChart graficaClientes3D = ChartFactory.createPieChart3D(titulo, valoresDefault, true, false, false);
		
		PiePlot propiedadesGrafica = (PiePlot) graficaClientes3D.getPlot();
		propiedadesGrafica.setSimpleLabels(true);
		
		PieSectionLabelGenerator generator = new StandardPieSectionLabelGenerator(
				"{0}: {1} ({2})", new DecimalFormat("0"), new DecimalFormat("0%"));
		//agregar a las propiedades de la grafica la configuracion de los valores a mostrarse.
		propiedadesGrafica.setLabelGenerator(generator);
		
		return new ChartPanel(graficaClientes3D);
	}
}
